Many computer systems, such as server systems, use a plurality of processing units or microprocessors to increase the overall processing power of the computer system. In a multiprocessor system, the separate processing units may often share the operating memory of the system.
In typical shared memory systems, a memory manager allocates memory to a requesting program and performs the process of garbage collection for that program. However, when garbage collection operations were performed on a memory in the multiple processor environment, the garbage collection was performed by one processor. All other processors were paused until the garbage collection operation was complete. This was done to prevent access by one processor to the shared memory while another processor was cleaning up the memory. As a result the efficiency of the multiple processor systems is significantly reduced due to the idle time of the unused processors during garbage collection.
It is with respect to these considerations and others that the present invention has been made.